			//  ========== 
			//  = Histogram = 
			//  ========== 
			/*
			 * 创建对象         var histogram = Histogram.createNew();
			 * 设置labelid        histogram.Labelid("a");
			 * 创建SVG            histogram.CreateSvg();
			 * 绘制                   histogram.Draw();
			 * 
			 * 未来：
			 *      ===;
			 * */
			! function() {
				var Histogram = Object.create(Object);
				Object.defineProperties(Histogram, {
					"CreateNew": {
						"value": function() {
							return FCreateNew();
						}
					}
				});

				function FCreateNew() {
					var histogram = Object.create(Histogram);
					histogram = {
						"ValueToProperty": function(value, name) {
								this[name] = value;
								return this;
						},
						"_labelid":undefined,
						"_width":undefined,
						"_data":undefined,
						"_placement_legend":undefined,
						"_scale_type_x":undefined,
						"_scale_type_y":undefined,
						"_switch_x_transfrom":undefined,
						"_scale_type_x_ordinal_type":undefined,
						"_scale_type_x_range_type_range_array":undefined,
						"_scale_type_x_range_type_min":undefined,
						"_scale_type_x_range_type_max":undefined,
						"_scale_type_x_range_type_Points_n":undefined,
						"_scale_type_x_range_type_Bands_p":undefined,
						"_scale_type_x_range_type_Bands_o":undefined,
						"_switch_y_transfrom":undefined,
						"_scale_type_y_ordinal_type":undefined,
						"_scale_type_y_range_type_range_array":undefined,
						"_scale_type_y_range_type_min":undefined,
						"_scale_type_y_range_type_max":undefined,
						"_scale_type_y_range_type_Points_n":undefined,
						"_scale_type_y_range_type_Bands_p":undefined,
						"_scale_type_y_range_type_Bands_o":undefined,
						"_showbackground_y":undefined,
						"_bottomAxis":undefined,
						"_showbackground_x":undefined,
						"_svg_type":undefined
					}
					Object.defineProperties(histogram,{
						"Labelid": {
							"value": function(v) {
								this.ValueToProperty(v, "_labelid");
								return this;
							}
						},
						"Width": {
							"value": function(v) {
								this.ValueToProperty(v, "_width");
								return this;
							}
						},
						"Data": {
							"value": function(v) {
								this._data = v
								return this;
							}
						},
						"Placement_legend": {
							"value": function(v) {
								this._placement_legend = v
								return this;
							}
						},
						"Scale_type_x": {
							"value": function(v) {
								this._scale_type_x = v
								return this;
							}
						},
						"Scale_type_y": {
							"value": function(v) {
								this._scale_type_y = v
								return this;
							}
						},
						"Switch_x_transfrom": {
							"value": function(v) {
								this._switch_x_transfrom = v
								return this;
							}
						},
						"Scale_type_x_ordinal_type": {
							"value": function(v) {
								this._scale_type_x_ordinal_type = v
								return this;
							}
						},
						"Scale_type_x_range_type_range_array": {
							"value": function(v) {
								this._scale_type_x_range_type_range_array = v
								return this;
							}
						},
						"Scale_type_x_range_type_min": {
							"value": function(v) {
								this._scale_type_x_range_type_min = v
								return this;
							}
						},
						"Scale_type_x_range_type_max": {
							"value": function(v) {
								this._scale_type_x_range_type_max = v
								return this;
							}
						},
						"Scale_type_x_range_type_Points_n": {
							"value": function(v) {
								this._scale_type_x_range_type_Points_n = v
								return this;
							}
						},
						"Scale_type_x_range_type_Bands_p": {
							"value": function(v) {
								this._scale_type_x_range_type_Bands_p = v
								return this;
							}
						},
						"Scale_type_x_range_type_Bands_o": {
							"value": function(v) {
								this._scale_type_x_range_type_Bands_o = v
								return this;
							}
						},
						"Switch_y_transfrom": {
							"value": function(v) {
								this._switch_y_transfrom = v
								return this;
							}
						},
						"Scale_type_y_ordinal_type": {
							"value": function(v) {
								this._scale_type_y_ordinal_type = v
								return this;
							}
						},
						"Scale_type_y_range_type_range_array": {
							"value": function(v) {
								this._scale_type_y_range_type_range_array = v
								return this;
							}
						},
						"Scale_type_y_range_type_min": {
							"value": function(v) {
								this._scale_type_y_range_type_min = v
								return this;
							}
						},
						"Scale_type_y_range_type_max": {
							"value": function(v) {
								this._scale_type_y_range_type_max = v
								return this;
							}
						},
						"Scale_type_y_range_type_Points_n": {
							"value": function(v) {
								this._scale_type_y_range_type_Points_n = v
								return this;
							}
						},
						"Scale_type_y_range_type_Bands_p": {
							"value": function(v) {
								this._scale_type_y_range_type_Bands_p = v
								return this;
							}
						},
						"Scale_type_y_range_type_Bands_o": {
							"value": function(v) {
								this._scale_type_y_range_type_Bands_o = v
								return this;
							}
						},
						"Showbackground_x": {
							"value": function(v) {
								this._showbackground_x = v
								return this;
							}
						},
						"Showbackground_y": {
							"value": function(v) {
								this._showbackground_y = v
								return this;
							}
						},
						"BottomAxis": {
							"value": function(v) {
								this._bottomAxis = v
								return this;
							}
						},
						"Svg_type": {
							"value": function(v) {
								this._svg_type = v
								return this;
							}
						},
						"CreateSvg": {
							value: function() {
								CreateSvg_histogram(this);
								return this;
							}
						},
						"Draw": {
							value: function() {
								draw_histogram(this);
								return this;
							}
						}
					})
					CreateSvg_histogram = function(histogram) {
						//createSvg之前先判断histogram各属性
						DetermineProperties_histogram(histogram);

						histogram.svg = d3.selectAll("#" + histogram._svgid)[0][0] == null ?
							d3.select("#" + histogram._labelid)
							.append("svg")
							//								.style("background", "red")
							.attr("id", histogram._svgid)
							//              .attr("preserveAspectRatio", "xMidYMid meet")
							//              .attr("viewBox", "0 0 " + histogram._width + " " + histogram._height + " ");
							.attr("width", histogram._width)
							.attr("height", histogram._height) : histogram.svg;;
						histogram.tool_window = d3.select("body")
							.append("div")
							.attr({
								"class": histogram._c_tool_window,
								"id": histogram._id_tool_window,
								"left": 0,
								"top": histogram._height,
							})
							.style({
								"opacity": 0
							})
					}

					DetermineProperties_histogram = function(histogram) {
						SetId_histogram(histogram);
						histogram._height = histogram._width < 300 ? alert("width不能< 300") :
							histogram._width / 0.618 * (1 - 0.618);
						histogram._ToRight = 100;
						histogram._legend_length = 100;
						histogram._histogram_axis_x_length = histogram._width - histogram._ToRight - (histogram._placement_legend ? histogram._legend_length : 30);
						histogram._scale_type_x_range_type_min = 0;
						histogram._scale_type_x_range_type_max = histogram._histogram_axis_x_length;
						histogram._scale_type_y_range_type_min = 0;
						histogram._scale_type_y_range_type_max = histogram._height - 100;
						// histogram._showbackground_x = histogram._switch_x_transfrom ? false : histogram._showbackground_x;
						// histogram._showbackground_y = histogram._switch_y_transfrom ? false : histogram._showbackground_y;

					}
					draw_histogram = function(histogram) {
						Tool_histogram(histogram);
						DataPretreatment_histogram(histogram);

						d3.selectAll("." + histogram._c_g_axis_x)[0][0] == null && histogram.svg.append("g")
							.attr("class", histogram._c_g_axis_x)
							.attr("transform", "translate(" + (histogram._ToRight) + "," + (histogram._height - 50 /*+ histogram._switch_x_transfrom * (histogram.axis_y_scale(0))*/ ) + ")")
							.call(histogram.axis_x)
							.style("font-size", "12px")
						d3.selectAll("." + histogram._c_g_axis_y)[0][0] == null && histogram.svg.append("g")
							.attr("class", histogram._c_g_axis_y)
							.attr("transform", "translate(" + (histogram._ToRight /* +histogram._switch_y_transfrom * (histogram.axis_x_scale(0))*/ ) + "," + (histogram._height - 50) + ")")
							.call(histogram.axis_y)
							.style("font-size", "12px");
						var maxlength = [];
						d3.selectAll("." + histogram._c_g_axis_y).selectAll("text")[0].map(function(d) {
							maxlength.push(d.getComputedTextLength());
						});
						//"+(100 - 12- d3.max(maxlength)) +"	
						histogram.g_title_x = histogram.svg.append("g")
							.attr({
								"class": histogram._c_g_title_x,
								"id": histogram._id_g_title_x,
								"transform": "translate(" + (histogram._ToRight + histogram._histogram_axis_x_length / 2) + "," + (histogram._height - 20) + ")"
							})
						histogram.title_x_updata = histogram.g_title_x.selectAll("." + histogram._c_g_title_x).data(["x轴/cm"]);
						histogram.title_x_enter = histogram.title_x_updata.enter();
						histogram.title_x_exit = histogram.title_x_updata.exit();
						histogram.g_title_y = histogram.svg.append("g")
							.attr({
								"class": histogram._c_g_grid_y_axis,
								"id": histogram._id_g_grid_y_axis,
								"transform": "translate(" + (100 - 12 - d3.max(maxlength)) + " ," + (histogram._height / 2) + ")"
							})
						histogram.title_y_updata = histogram.g_title_y.selectAll("." + histogram._c_g_title_y).data(["y轴/个"]);
						histogram.title_y_enter = histogram.title_y_updata.enter();
						histogram.title_y_exit = histogram.title_y_updata.exit();

						histogram.svg_legend_g = d3.selectAll("." + histogram._svg_legend_g_class)[0][0] == null && histogram.svg.append("g")
							.attr("class", histogram._svg_legend_g_class)
							.attr("id", histogram._svg_legend_g_id)
							.attr("transform", histogram._placement_legend ? "translate(" + histogram._width + ",0)" : "translate(0,0)");

						histogram.g_grid_x_axis = histogram.g_grid_x_axis || histogram.svg.append("g")
							.attr({
								"class": histogram._c_g_grid_x_axis,
								"id": histogram._id_g_grid_x_axis,
								"transform": "translate(" + (histogram._ToRight) + "," + (histogram._height - 50) + ")"
							})
						histogram.g_grid_y_axis = histogram.g_grid_y_axis || histogram.svg.append("g")
							.attr({
								"class": histogram._c_g_grid_y_axis,
								"id": histogram._id_g_grid_y_axis,
								"transform": "translate(" + (histogram._ToRight) + "," + (histogram._height - 50) + ")"
							})

						title(histogram);
						grid(histogram);
						legend(histogram);

						function title(histogram) {
							histogram.title_x_enter.append("text")
								.attr({
									"class": histogram._c_title_x,
									"id": histogram._id_title_x,
									"x": 0,
									"dx": 0,
									"y": 0,
									"dy": 0
								})
								.style("font-size", "12px")
								.text(function(d) {
									return d;
								})
							histogram.title_y_enter.append("text")
								.attr({
									"class": histogram._c_title_y,
									"id": histogram._id_title_y,
									"x": 0,
									"dx": 0,
									"y": 0,
									"dy": 0
								})
								.style({
									"font-size": "12px",
									"writing-mode": "tb"
								})
								.text(function(d) {
									return d;
								})

						}

						function grid(histogram) {
							histogram.grid_x = histogram.g_grid_x_axis.call(d3.svg.axis().scale(histogram.axis_x_scale).innerTickSize(-(histogram._height - 100)))
							histogram.grid_x.selectAll(".tick").selectAll("text").remove();
							histogram.grid_x.selectAll(".domain").remove()
							histogram.grid_x.selectAll("line")
								.attr("stroke-opacity", histogram._showbackground_x ? 1 : 0)
								.style("stroke-dasharray", [2, 1])
							histogram.grid_y = histogram.g_grid_y_axis.call(d3.svg.axis().scale(histogram.axis_y_scale).innerTickSize(-(histogram._histogram_axis_x_length)).orient("left"))
							histogram.grid_y.selectAll(".tick").selectAll("text").remove();
							histogram.grid_y.selectAll(".domain").remove()
							histogram.grid_y.selectAll("line")
								.style("stroke-opacity", histogram._showbackground_y ? 0.5 : 0)
								.style("stroke-dasharray", [2, 1])
						}

						function legend(histogram) {
							histogram.svg_legend_logo_updata = histogram.svg_legend_g.selectAll("#" + histogram._svg_legend_logo_class).data(histogram._data_)
							histogram.svg_legend_logo_enter = histogram.svg_legend_logo_updata.enter();
							histogram.svg_legend_logo_exit = histogram.svg_legend_logo_updata.exit();
							histogram.svg_legend_logo_enter.append("circle")
								.attr({
									"class": function(d, i) {
										return histogram._svg_legend_logo_class + i;
									},
									"id": function(d, i) {
										return histogram._svg_legend_logo_id + i;
									},
									"cx": function(d, i) {
										return histogram._placement_legend ? (-10) : 110 + i * ((histogram._width - 100) / histogram._data_.length);

									},
									"cy": function(d, i) {
										return histogram._placement_legend ? (20 * i + 10) : 10;
									},
									"fill": function(d, i) {
										return histogram._scalecolor(d.name);
									},
									"r": function(d, i) {
										return "5px";

									}
								});

							histogram.svg_legend_text_updata = histogram.svg_legend_g.selectAll("#" + histogram._svg_legend_text_class).data(histogram._data_)
							histogram.svg_legend_text_enter = histogram.svg_legend_text_updata.enter();
							histogram.svg_legend_text_exit = histogram.svg_legend_text_updata.exit();
							histogram.svg_legend_text_enter.append("text")
								.attr({
									"class": function(d, i) {
										return histogram._svg_legend_text_class + i;
									},
									"id": function(d, i) {
										return histogram._svg_legend_text_id + i;
									},
									"x": function(d, i) {
										//										return histogram._bottomAxis == "x" ? 
										return histogram._placement_legend ? -(10 + 5) : 115 + i * ((histogram._width - 100) / histogram._data_.length);

									},
									"y": function(d, i) {
											return histogram._placement_legend ? (20 * i + 10 + 5) : 10 + 5;
										} //,

									//									"r": function(d, i) {
									//										return "5px";
									//
									//									}
								})
								.text(function(d, i) {
									return d.name
								})
								.style("text-anchor", histogram._placement_legend ? "end" : "start")
						}

						histogram.g_rect_updata = histogram.svg.selectAll("." + histogram._c_g_rect).data(histogram._data_);
						histogram.g_rect_enter = histogram.g_rect_updata.enter();
						histogram.g_rect_exit = histogram.g_rect_updata.exit();
						histogram.g_rect_enter.append("g")
							.attr({
								"class": function(d, i) {
									return histogram._c_g_rect + i;
								},
								"id": function(d, i) {
									return histogram._id_g_rect + i;
								},
								"fill": function(d, i) {
									return histogram._scalecolor(d.name);
								},
								"transform": "translate(" + histogram._ToRight + "," + (histogram._height - 50) + ")"
							})
							.selectAll("." + histogram._c_rect)
							.data(function(d) {
								return d;
							})
							.enter()
							.append("rect")
							.attr({
								"class": function(d, i) {
									console.log(histogram._c_rect, d.i, i);
									return histogram._c_rect + d.i + i;
								},
								"id": function(d, i) {
									return histogram._id_rect + d.i + i;
								},
								"x": function(d) {
									return histogram._bottomAxis == "x" ? (histogram.axis_x_scale(d[0]) + (d.i - 1) * histogram._rect_width) : histogram.axis_y_scale.rangeExtent()[1]
										//									return histogram.axis_x_scale(d[0]) + (d.i - 1) * histogram._rect_width;
								},
								"y": function(d) {
									console.log(histogram.axis_y_scale(d[0]), d[0]);
									return histogram._bottomAxis == "x" ? histogram.axis_x_scale.rangeExtent()[0] : (histogram.axis_y_scale(d[0]) + (d.i - 1) * histogram._rect_width);
									//									return histogram.axis_x_scale.rangeExtent()[0];
								},
								"width": function(d) {
									return histogram._bottomAxis == "x" ? histogram._rect_width : 0;
									//									return histogram._rect_width;
								},
								"height": function(d) {
									return histogram._bottomAxis == "x" ? 0 : histogram._rect_width;
								}
							})
							.on("mousemove", function(d) {
								histogram.tool_window.html("type:" + d.name + "<br />" + "x:" + d[0] + "<br />" + "y:" + d[1])
									.style("left", (d3.event.pageX) + "px")
									.style("top", (d3.event.pageY + 20) + "px")
									.style("opacity", 1.0)
							})
							.on("mouseout", function(d) {
								histogram.tool_window
									.html("")
									.style("left", "0px")
									.style("top", "0px")
									.style("opacity", 0.0)

							})
							.transition()
							.delay(function(d, i) {
								return i * 200;
							})
							.duration(2000)
							.attr({
								"y": function(d) {

									return histogram._bottomAxis == "x" ? histogram.axis_y_scale(d[1]) : (histogram.axis_y_scale(d[0]) + (d.i - 1) * histogram._rect_width);;
								},
								"x": function(d) {
									return histogram._bottomAxis == "x" ? (histogram.axis_x_scale(d[0]) + (d.i - 1) * histogram._rect_width) : histogram.axis_y_scale(d[1]);
								},
								"height": function(d) {
									return histogram._bottomAxis == "x" ? Math.abs(histogram.axis_y_scale(d[1])) : histogram._rect_width;
								},
								"width": function(d) {
									return histogram._bottomAxis == "x" ? histogram._rect_width : Math.abs(histogram.axis_x_scale(d[1]))
								}
							})

					}

					function Tool_histogram(histogram) {
						histogram._scalecolor = d3.scale.category10();

					}
					histogram._data_ = [];
					histogram._data_.columns = [];

					function DataPretreatment_histogram(histogram) {
						histogram._data.map(function(d, i) { // >0则开始得出数据
							i == 0 ? (d.map(function(d, i) {
									// >0则开始得出数据
									i == 0 ? "" : histogram._data_.columns.push(d);
								})) :
								( // >0则开始得出数据33
									name, histogram._data_[i - 1] = [],
									d.map(function(d, j) {
										j == 0 ? name = d : (a = [histogram._data_.columns[j - 1], d], a.name = histogram._data_[i - 1].name = name, a.i = i, histogram._data_[i - 1].push(a))
									}))
						})

						histogram._scalecolor();
						Package_scale(histogram, "x");
						Package_scale(histogram, "y");

						histogram._rect_width = histogram._bottomAxis == "x" ? ((histogram._scale_type_x_ordinal_type == 2 && ((histogram._histogram_axis_x_length / (histogram._data_[0].length - 1 + histogram._scale_type_x_range_type_Points_n)) / histogram.length)), (histogram._scale_type_x_ordinal_type == 3 && ((histogram.axis_x_scale.rangeBand() / histogram._data_.length)))) :
							((histogram._scale_type_y_ordinal_type == 2 && ((histogram._histogram_axis_y_length / (histogram._data_[0].length - 1 + histogram._scale_type_y_range_type_Points_n)) / histogram.length)), (histogram._scale_type_y_ordinal_type == 3 && ((histogram.axis_y_scale.rangeBand() / histogram._data_.length))))
						console.log(histogram._rect_width);
					}

					function Package_scale(histogram, object) {
						var scale;
						var array = ["_scale_type_" + object, //0
							"_scale_type_" + object + "_ordinal_type", //1
							"_scale_type_" + object + "_range_type_range_array", //2
							"_scale_type_" + object + "_range_type_min", //3
							"_scale_type_" + object + "_range_type_max", //4
							"_scale_type_" + object + "_range_type_Points_n", //5
							"_scale_type_" + object + "_range_type_Bands_p", //6
							"_scale_type_" + object + "_range_type_Bands_o", //7
							"_axis_" + object + "_data", //8
							"axis_" + object + "_scale", //9
							"axis_" + object, //10
							"_showbackground_" + object //11
						];

						if(histogram[array[0]] == 1) {
							scale = d3.scale.linear();
							var max = [],
								min = [];

							histogram._data_.map(function(d) {
								max.push(d3.max(d.map(function(d) {
									var a = d[object == histogram._bottomAxis ? 0 : 1];
									return typeof(a) == "string" ? Number(a) : a;
								})))
								min.push(d3.min(d.map(function(d) {
									var a = d[object == histogram._bottomAxis ? 0 : 1];
									return typeof(a) == "string" ? Number(a) : a;
								})))
							})
							var domain = [d3.min(min), d3.max(max)]
								//							histogram[array[8]] = Filterthedata(histogram._data, "data") /*[0].histograms*/ .map(function(d, i) {
								//
								//								return d[0][(object == "x" ? "x" : "value1")];
								//							}).sort(function(a, b) {
								//								return b - a;
								//							})
							var ceshi = domain.map(function(d, i) {
								if(i == 0) {
									var ii = 0;

									var f = d >= 0 ? 1 : -1;
									var num = Math.abs(d);
									while(num >= 10) {
										num = (num - (num % 10)) / 10;
										ii++;
									}
									var c = Math.pow(10, ii)
									var o = Math.ceil(Math.abs(d) / c)
									var shu = f > 0 ? (c == 1 ? 0 : f * o * c) : (c == 1 ? 10 * f : f * o * c);
									return shu;
								} else {
									//  ========== 
									//  = 此处不该纠结 = 
									//  ========== 
									var ii = 0;

									var f = d >= 0 ? 1 : -1;
									var num = Math.abs(d);
									while(num >= 10) {
										num = (num - (num % 10)) / 10;
										ii++;
									}
									var c = Math.pow(10, ii)
									var o = Math.ceil(Math.abs(d) / c)
									var shu = f > 0 ? (c == 1 ? 10 * f : f * o * c) : (c == 1 ? 0 : f * o * c);
									return shu;
								}
							});
							scale.domain(ceshi); //数值中的元素依旧是数组。但是实际需要时每个元素的第一个值来衡量。histogram._data，function(d){return d[1]};设置无效。
							//							var max = d3.max(histogram._layouthistogram(histogram._data), function(d) {
							//								return d3.max(d.values, function(d) {
							//									return d.y0 + d.y;
							//								});
							//							})
							//							object == "y" && scale.domain([0, max]);
							scale.rangeRound([(object == "x" ? 1 : -1) * histogram[array[3]], (object == "x" ? 1 : -1) * histogram[array[4]]])

						} else if(histogram[array[0]] == 2) {
							scale = d3.scale.ordinal();
							histogram[array[8]] = histogram._data_.columns
								/*.sort(function(a, b) {
								                            return a - b
								                        })*/
							if(histogram[array[1]] == 1) {
								scale.range(histogram[array[2]]);
							} else if(histogram[array[1]] == 2) {
								scale.rangeRoundPoints([(object == "x" ? 1 : -1) * histogram[array[3]], (object == "x" ? 1 : -1) * histogram[array[4]]], histogram[array[5]]);
							} else {
								scale.rangeRoundBands([(object == "x" ? 1 : -1) * histogram[array[3]], (object == "x" ? 1 : -1) * histogram[array[4]]], histogram[array[6]], histogram[array[7]])
							}
							scale.domain(histogram[array[8]]); //数值中的元素依旧是数组。但是实际需要时每个元素的第一个值来衡量。histogram._data，function(d){return d[1]};设置无效。
						} else {
							scale = d3.time.scale();
						}

						histogram[array[9]] = scale;
						histogram[array[10]] = d3.svg.axis()
							.scale(histogram[array[9]])
							.tickSize(1)
							//                              .innerTickSize(object == "x" ? -3 : 3)
							.innerTickSize(3)
							//							.outerTickSize(object == "x" ? (histogram[array[11]] == true ?  histogram._switch_x_transfrom * histogram.axis_x_scale(0) -19 : 0) : (histogram[array[11]] == true ? - histogram._switch_y_transfrom * histogram.axis_y_scale(0) +19 : 0))
							.orient(object == "x" ? "bottom" : "left");
					}

					//  ========== 
					//  = 判断属性 = 
					//  ========== 
					Detect_function_histogram = function(object_lh) {
						return typeof(object_lh) == "undefined";
					}
					SetId_histogram = function(histogram) {
						histogram._svgid = histogram._labelid + "svg";
						histogram._c_g_axis_x = histogram._labelid + "_c_g_axis_x";
						histogram._c_g_axis_y = histogram._labelid + "_c_g_axis_y";
						histogram._c_axis_x = histogram._labelid + "_c_axis_x";
						histogram._c_axis_y = histogram._labelid + "_c_axis_y";

						histogram._c_rect = histogram._labelid + "_c_rect";
						histogram._id_rect = histogram._labelid + "_id_rect";

						histogram._c_g_title_x = histogram._labelid + "_c_g_title_x"
						histogram._id_g_title_x = histogram._labelid + "_id_g_title_x"
						histogram._c_title_x = histogram._labelid + "_c_title_x"
						histogram._id_title_x = histogram._labelid + "_id_title_x"

						histogram._c_g_title_y = histogram._labelid + "_c_g_title_y"
						histogram._id_g_title_y = histogram._labelid + "_id_g_title_y"
						histogram._c_title_y = histogram._labelid + "_c_title_y"
						histogram._id_title_y = histogram._labelid + "_id_title_y"

						histogram._c_g_grid_x_axis = histogram._labelid + "_c_g_grid_x_axis";
						histogram._id_g_grid_x_axis = histogram._labelid + "_id_g_grid_x_axis";
						histogram._c_g_grid_y_axis = histogram._labelid + "_c_g_grid_y_axis";
						histogram._id_g_grid_y_axis = histogram._labelid + "_id_g_grid_y_axis";
						histogram._c_grid_x_axis = histogram._labelid + "_c_grid_x_axis";
						histogram._id_grid_x_axis = histogram._labelid + "_id_grid_x_axis";
						histogram._c_grid_y_axis = histogram._labelid + "_c_grid_y_axis";
						histogram._id_grid_y_axis = histogram._labelid + "_id_grid_y_axis";

						histogram._svg_legend_g_class = histogram._labelid + "legend_g_class";
						histogram._svg_legend_g_id = histogram._labelid + "legend_g_id";
						histogram._svg_legend_logo_class = histogram._labelid + "legend_logo_class";
						histogram._svg_legend_logo_id = histogram._labelid + "legend_logo_id";
						histogram._svg_legend_text_class = histogram._labelid + "legend_text_class";
						histogram._svg_legend_text_id = histogram._labelid + "legend_text_id";

						histogram._c_tool_g = histogram._labelid + "_c_tool_g";
						histogram._id_tool_g = histogram._labelid + "_id_tool_g";
						histogram._c_tool_line = histogram._labelid + "_c_tool_line";
						histogram._id_tool_line = histogram._labelid + "_id_tool_line";
						histogram._c_tool_window = "Tooltip";
						histogram._id_tool_window = histogram._labelid + "PiesTooltip_id";

					}
					return histogram;
				};
				this.Histogram = Histogram;
			}();